﻿using System;

namespace easyccms.BusinessLayer.Entities
{
    /// <summary>
    /// Class representing a user.
    /// </summary>
    public class SiteUser : Entity
    {
        /// <summary>
        /// Gets or sets the user id.
        /// </summary>
        /// <value>
        /// The user id.
        /// </value>
        public virtual int UserId { get; set; }

        /// <summary>
        /// Gets or sets the user group.
        /// </summary>
        /// <value>
        /// The user group.
        /// </value>
        public virtual UserGroup UserGroup { get; set; }

        /// <summary>
        /// Gets or sets the user profile.
        /// </summary>
        /// <value>
        /// The user profile.
        /// </value>
        public virtual UserProfile UserProfile { get; set; }

        /// <summary>
        /// Gets or sets the email.
        /// </summary>
        /// <value>
        /// The email.
        /// </value>
        public virtual string Email { get; set; }

        /// <summary>
        /// Gets or sets the email activation code.
        /// </summary>
        /// <value>
        /// The email activation code.
        /// </value>
        public virtual string EmailActivationCode { get; set; }

        /// <summary>
        /// Gets or sets the password.
        /// </summary>
        /// <value>
        /// The password.
        /// </value>
        public virtual string Password { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [password sent].
        /// </summary>
        /// <value>
        ///   <c>true</c> if [password sent]; otherwise, <c>false</c>.
        /// </value>
        public virtual bool? PasswordSent { get; set; }

        /// <summary>
        /// Gets or sets the password code.
        /// </summary>
        /// <value>
        /// The password code.
        /// </value>
        public virtual string PasswordCode { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether [locked out].
        /// </summary>
        /// <value>
        ///   <c>true</c> if [locked out]; otherwise, <c>false</c>.
        /// </value>
        public virtual bool LockedOut { get; set; }

        /// <summary>
        /// Gets or sets the last login date.
        /// </summary>
        /// <value>
        /// The last login date.
        /// </value>
        public virtual DateTime? LastLoginDate { get; set; }

        /// <summary>
        /// Gets or sets the created.
        /// </summary>
        /// <value>
        /// The created.
        /// </value>
        public virtual DateTime? Created { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="SiteUser"/> is enabled.
        /// </summary>
        /// <value>
        ///   <c>true</c> if enabled; otherwise, <c>false</c>.
        /// </value>
        public virtual bool? Enabled { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this <see cref="SiteUser"/> is deleted.
        /// </summary>
        /// <value>
        ///   <c>true</c> if deleted; otherwise, <c>false</c>.
        /// </value>
        public virtual bool Deleted { get; set; }

        /// <summary>
        /// Gets or sets a value indicating whether this instance can be deleted.
        /// </summary>
        /// <value>
        /// 	<c>true</c> if this instance can be deleted; otherwise, <c>false</c>.
        /// </value>
        public virtual bool? CanBeDeleted { get; set; }
    }
}
